#ifndef TLEXICO_H_
#define TLEXICO_H_

#include "TSintactico.h"

typedef enum {
	TOKEN_STRING, /*cadena de caracteres*/
	TOKEN_NUMERO, /*numero en punto flotante*/
	TOKEN_OBJETO_EMPIEZA, /*inicio de objeto*/
	TOKEN_OBJETO_TERMINA, /*fin de objeto*/
	TOKEN_ARRAY_EMPIEZA, /*inicio de array*/
	TOKEN_ARRAY_TERMINA, /*fin de array*/
	TOKEN_COMA, /*coma*/
	TOKEN_DOSPUNTOS, /*dos puntos*/
	TOKEN_TRUE, TOKEN_FALSE, TOKEN_NULL
} TipoToken;

typedef struct _tLexico {
	char dato[MAX_DATO];
	int pos_dato;
	Token token;
	int tokenListo;
	TSintactico* as;
	TipoErrores ultimo_error;
} TLexico;

int TLexico_Crear(TLexico* al);

int TLexico_Destruir(TLexico* al);

int TLexico_setAnalizadorSintactico(TLexico* al, TSintactico* as);

int TLexico_PushChar(TLexico* al, char c);

int TLexico_terminarFlujo(TLexico* al);

int TLexico_getUltimoError(TLexico* al, int* codigo, char* mensaje);

#endif /* TLEXICO_H_ */
